package com.zw.a.basic.a12.demo07_reader_and_writer;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

//案例: 演示字符串中的编解码问题.
/*
    结论: 记忆
        1. GBK是针对于我们中国国内的码表, ISO-8859-1: 是欧洲通用码表.  UTF-8是国际通用码表(统一码, 万国码)
        2. 但凡出现乱码情况, 原因一定是: 编解码不一致.
            编码:  字符  ->  字节,  把我们能看懂的, 转成计算机能看懂的(但是我们看不懂)
            解码:  字节  ->  字符,  把计算机能看懂的(但是我们看不懂), 转成我们能看懂的
 */
public class Demo02 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //1. 演示编码.
        /*String str = "我爱你";
        //byte[] bys = str.getBytes();              //默认码表: utf-8   [-26, -120, -111, -25, -120, -79, -28, -67, -96]
        //byte[] bys = str.getBytes("utf-8");       //[-26, -120, -111, -25, -120, -79, -28, -67, -96]
        byte[] bys = str.getBytes("gbk");           //[-50, -46, -80, -82, -60, -29]
        System.out.println(Arrays.toString(bys));*/

        //2. 演示解码
        byte[] bys = {-26, -120, -111, -25, -120, -79, -28, -67, -96};
        //String s = new String(bys);                //默认码表: utf-8
        //String s = new String(bys, "utf-8");
        String s = new String(bys, "gbk");           //因为编解码不一致, 所以乱码.
        System.out.println(s);
    }
}
